#ifndef __GE_SHADER_H__
#define __GE_SHADER_H__

#include "GE_Base.h"
namespace Syp
{
///A shader is a an abstract base class for all derived shader types. Current hardware support Vertex/Pixel Shaders only. In future, there might be more and they will also derive from this Shader class.
class SYPAPI Shader : public Resource
{
	friend class Renderer;
	friend class ShaderProgram;
public:	
	virtual void compileShader() = 0;
	bool getCompiledStatus();
protected:
	Shader(const String& filename);
	
    PInt id;
	///This String holds the actual shader source code.
	String source;
	///Whether shader has been compiled yet
	bool compiled;
	///protected because we need to derive further from this class
	virtual ~Shader();
private:
	   
};
}
#endif //__GE_SHADER_H__
